package com.spdd.mt.common.thread;

/**
 * 线程池
 *
 * @author shanfeilong
 */
public interface ThreadService {

    /**
     * 提交任务
     *
     * @param threadPoolEnum 线程池类型
     * @param task           Runnable
     */
    void submit(ThreadPoolTypeEnum threadPoolEnum, Runnable task);

    /**
     * 提交任务(延迟执行)
     *
     * @param task                        Runnable
     * @param delayedExecutionMillisecond 延迟处理的毫秒(如果执行的时间小于执行时间则sleep,如果大于等于执行时间则立即执行)
     */
    void submitDelayedExecution(Runnable task, long delayedExecutionMillisecond);

    /**
     * 获取线程池信息
     *
     * @param threadPoolEnum 线程池类型
     * @return ThreadPoolInfoDto
     */
    ThreadPoolInfo getExecutorInfo(ThreadPoolTypeEnum threadPoolEnum);
}
